<?php

// PHP雪里开轻量级报修系统 V1.0Beta
// 演示地址: http://baoxiu.chalide.cn
// 更新关注: /weivote
// 文件路径: stu/list.php
// 文件大小: 8854 字节
// 最后修改时间: 2025-05-21 15:35:23
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权

/**
 * 本文件功能：学生查看报修记录
 * 版权声明：保留发行权和署名权
 * 作者信息：功能反馈:15058593138@qq.com(手机号同微信)
 */

// 处理AJAX请求
if (isset($_GET['act'])) {
    switch ($_GET['act']) {
        case 'status':
            // 修改状态
            $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
            $status = isset($_POST['status']) ? trim($_POST['status']) : '';
            
            if ($id <= 0) {
                json_error('无效的报修ID');
            }
            
            if (!in_array($status, ['已完成', '已关闭'])) {
                json_error('无效的状态');
            }
            
            // 检查报修记录是否存在且属于当前用户
            $condition = "id = {$id} AND user_id = {$_SESSION['user_id']}";
            $repair = $db->getOne('bxiu', $condition);
            
            if (!$repair) {
                json_error('报修记录不存在或不属于您');
            }
            
            // 更新状态
            $data = [
                'status' => $status,
                'update_time' => date('Y-m-d H:i:s')
            ];
            
            $result = $db->update('bxiu', $data, "id = {$id}");
            
            if ($result) {
                json_success('状态修改成功');
            } else {
                json_error('状态修改失败: ' . $mysqli->error);
            }
            break;
            
        case 'delete':
            // 删除报修记录
            $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
            
            if ($id <= 0) {
                json_error('无效的报修ID');
            }
            
            // 检查报修记录是否存在且属于当前用户
            $condition = "id = {$id} AND user_id = {$_SESSION['user_id']}";
            $repair = $db->getOne('bxiu', $condition);
            
            if (!$repair) {
                json_error('报修记录不存在或不属于您');
            }
            
            // 只允许删除未处理状态的报修
            if ($repair['status'] != '未处理') {
                json_error('只能删除未处理状态的报修');
            }
            
            // 删除记录
            $result = $db->delete('bxiu', "id = {$id}");
            
            if ($result) {
                json_success('报修记录删除成功');
            } else {
                json_error('报修记录删除失败: ' . $mysqli->error);
            }
            break;
    }
    exit;
}
// 包含头部
include './inc/head.php';
// 获取查询参数
$keyword = isset($_GET['keyword']) ? trim($_GET['keyword']) : '';
$status = isset($_GET['status']) ? trim($_GET['status']) : '';
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$page_size = 10;

// 构建查询条件
$condition = "user_id = {$_SESSION['user_id']}";

if (!empty($keyword)) {
    $keyword = $mysqli->real_escape_string($keyword);
    $condition .= " AND (title LIKE '%{$keyword}%' OR location LIKE '%{$keyword}%')";
}

if (!empty($status)) {
    $status = $mysqli->real_escape_string($status);
    $condition .= " AND status = '{$status}'";
}

// 获取分页数据
$pager = $db->pager('bxiu', $condition, '*', 'create_time DESC', $page, $page_size);
$repairs = $pager['data'];
?>

<div class="page-header">
    <h2 class="page-title">报修记录</h2>
</div>

<div class="card">
    <div class="card-header">
        <form class="search-form" method="get" action="">
            <input type="hidden" name="do" value="list">
            <div class="row">
                <div class="col-md-4">
                    <div class="form-group">
                        <input type="text" class="form-control" name="keyword" placeholder="搜索标题、位置" value="<?php echo htmlspecialchars($keyword); ?>">
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        <select class="form-control" name="status">
                            <option value="">全部状态</option>
                            <option value="未处理" <?php echo $status == '未处理' ? 'selected' : ''; ?>>未处理</option>
                            <option value="处理中" <?php echo $status == '处理中' ? 'selected' : ''; ?>>处理中</option>
                            <option value="已完成" <?php echo $status == '已完成' ? 'selected' : ''; ?>>已完成</option>
                            <option value="已关闭" <?php echo $status == '已关闭' ? 'selected' : ''; ?>>已关闭</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-2">
                    <button type="submit" class="btn btn-primary">搜索</button>
                </div>
            </div>
        </form>
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>标题</th>
                        <th>位置</th>
                        <th>状态</th>
                        <th>提交时间</th>
                        <th>最后更新</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (empty($repairs)): ?>
                    <tr>
                        <td colspan="7" class="text-center">暂无记录</td>
                    </tr>
                    <?php else: ?>
                    <?php foreach ($repairs as $repair): ?>
                    <tr>
                        <td><?php echo $repair['id']; ?></td>
                        <td><?php echo htmlspecialchars($repair['title']); ?></td>
                        <td><?php echo htmlspecialchars($repair['location']); ?></td>
                        <td><?php echo status_label($repair['status']); ?></td>
                        <td><?php echo format_date($repair['create_time']); ?></td>
                        <td><?php echo format_date($repair['update_time']); ?></td>
                        <td>
                            <a href="?do=repa&id=<?php echo $repair['id']; ?>" class="btn btn-sm btn-primary">详情</a>
                            
                            <?php if ($repair['status'] == '处理中'): ?>
                            <button type="button" class="btn btn-sm btn-success" onclick="changeStatus(<?php echo $repair['id']; ?>, '已完成')">完成</button>
                            <button type="button" class="btn btn-sm btn-secondary" onclick="changeStatus(<?php echo $repair['id']; ?>, '已关闭')">关闭</button>
                            <?php endif; ?>
                            
                            <?php if ($repair['status'] == '未处理'): ?>
                            <button type="button" class="btn btn-sm btn-danger" onclick="deleteRepair(<?php echo $repair['id']; ?>)">删除</button>
                            <?php endif; ?>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
        
        <?php if ($pager['total_pages'] > 1): ?>
        <div class="pagination-container">
            <?php echo pagination($pager['page'], $pager['total_pages'], "?do=list&keyword=" . urlencode($keyword) . "&status=" . urlencode($status)); ?>
        </div>
        <?php endif; ?>
    </div>
</div>

<script>
// 修改报修状态
function changeStatus(id, status) {
    if (!confirm('确定要将报修状态修改为"' + status + '"吗？')) {
        return;
    }
    
    ajax('?do=list&act=status', {
        id: id,
        status: status
    }, function(response) {
        if (response.status === 'success') {
            showToast(response.msg, 'success');
            
            // 刷新页面
            setTimeout(function() {
                window.location.reload();
            }, 1500);
        } else {
            showToast(response.msg, 'error');
        }
    });
}

// 删除报修记录
function deleteRepair(id) {
    if (!confirm('确定要删除这条报修记录吗？此操作不可恢复！')) {
        return;
    }
    
    ajax('?do=list&act=delete', {
        id: id
    }, function(response) {
        if (response.status === 'success') {
            showToast(response.msg, 'success');
            
            // 刷新页面
            setTimeout(function() {
                window.location.reload();
            }, 1500);
        } else {
            showToast(response.msg, 'error');
        }
    });
}
</script>
